package com.newshub.admin.mapper;

import com.newshub.admin.entity.RssFetchLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

@Mapper
public interface RssFetchLogMapper {
    int insert(RssFetchLog log);
    
    // 分页查询抓取日志
    List<RssFetchLog> selectPage(@Param("rssFeedId") Long rssFeedId,
                                 @Param("status") String status,
                                 @Param("startDate") LocalDate startDate,
                                 @Param("endDate") LocalDate endDate,
                                 @Param("offset") int offset,
                                 @Param("limit") int limit,
                                 @Param("sortField") String sortField,
                                 @Param("sortOrder") String sortOrder);
    
    // 统计总数
    long count(@Param("rssFeedId") Long rssFeedId,
               @Param("status") String status,
               @Param("startDate") LocalDate startDate,
               @Param("endDate") LocalDate endDate);
    
    // 根据RSS源ID查询
    List<RssFetchLog> selectByFeedId(@Param("rssFeedId") Long rssFeedId,
                                     @Param("startDate") LocalDate startDate,
                                     @Param("endDate") LocalDate endDate,
                                     @Param("offset") int offset,
                                     @Param("limit") int limit);
    
    // 根据RSS源ID统计
    long countByFeedId(@Param("rssFeedId") Long rssFeedId,
                       @Param("startDate") LocalDate startDate,
                       @Param("endDate") LocalDate endDate);
    
    // 根据ID查询单条记录
    RssFetchLog selectById(@Param("id") Long id);
    
    // 删除日志记录
    int deleteById(@Param("id") Long id);
    
    // 批量删除日志记录
    int deleteByIds(@Param("ids") List<Long> ids);
    
    // 批量查询多个RSS源的抓取日志（用于成功率统计）
    List<RssFetchLog> selectByFeedIdsAndDateRange(@Param("feedIds") List<Long> feedIds,
                                                  @Param("startDate") LocalDate startDate,
                                                  @Param("endDate") LocalDate endDate);
}
